package com.blackhorse.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @RequestMapping 注解的作用
 * 用于建立请求URL和处理请求方法之间的对应关系
 * 可以用在类上或方法上，用在类上表示父路径（一级路径），用在方法上表示子路径（二级路径）
 * 属性：
 * value：请求路径（相当于path）
 * path : 请求路径（相当于value）
 * method ： 表示请求方法类型，枚举类型可选 GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
 *      只有指定的请求方法才会被接受
 * params： 用于限制请求参数的格式，支持key/value的简单格式
 *      params = {"username"}表示必须含有请求参数username
 *      params = {"username=zhangsan"}表示必须含有请求参数username并且值为zhangsan
 * headers: 用于限制消息请求头的条件，要求必须包含指定的请求头
 */

//第一个控制器类
@Controller
@RequestMapping(path = "/hello")
public class HelloController {
    //请求路径
    @RequestMapping(path = "/hello")
    public String sayHello() {
        System.out.println("Hello Spring MVC !");
        //转发的路径success.jsp
        return "success";
    }

    //RequestMapping注解的属性
    @RequestMapping(value = "/testRequestMapping",//path = "/testRequestMapping"
            method = {RequestMethod.POST, RequestMethod.GET},
            params = {"username=zhangsan"},// params = {"username"}
            headers = {"Accept"})
    public String testRequestMapping() {
        System.out.println("测试RequestMapping注解...");
        return "success";
    }
}
